package com.ny.mapper;

import java.util.List;
import com.ny.domain.MarketingActivityDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;

/**
 * 营销活动Mapper接口
 *
 * @author MSI-NB
 * @date 2025-03-08 13:14:38
 */
@Mapper
public interface MarketingActivityMapper {

    /**
     * 根据活动ID查询营销活动信息
     *
     * @param activityId 活动ID
     * @return MarketingActivityDO
     */
    MarketingActivityDO selectById(@Param("activityId") Integer activityId);

    /**
     * 根据活动名称查询营销活动信息
     *
     * @param activityName 活动名称
     * @return MarketingActivityDO
     */
    MarketingActivityDO selectByName(@Param("activityName") String activityName);

    /**
     * 插入营销活动信息
     *
     * @param marketingActivityDO 营销活动信息
     * @return 插入结果
     */
    int insert(MarketingActivityDO marketingActivityDO);

    /**
     * 更新营销活动信息
     *
     * @param marketingActivityDO 营销活动信息
     * @return 更新结果
     */
    int updateById(MarketingActivityDO marketingActivityDO);

    /**
     * 删除营销活动信息
     *
     * @param activityId 活动ID
     * @return 删除结果
     */
    int deleteById(@Param("activityId") Integer activityId);

    /**
     * 根据日期范围统计营销活动数量
     *
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 营销活动数量
     */
    int countByDateRange(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 根据日期范围分页查询营销活动信息
     *
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param pageIndex 页码
     * @param pageSize 每页大小
     * @return 营销活动列表
     */
    List<MarketingActivityDO> pageByDateRange(@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("pageIndex") Integer pageIndex, @Param("pageSize") Integer pageSize);
}
